package com.ruoyi.seal.service;

import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.seal.domain.Seal;
import com.ruoyi.seal.domain.SealType;

import java.util.List;

/**
 * 用印Service接口
 *
 * @author 钟彧
 * @date 2022-08-08
 */
public interface ISealService {

    /**
     * 查询用印
     *
     * @param sealId 用印主键
     * @return 用印
     */
    public Seal selectSealBySealId(String sealId, Long userId);

    /**
     * 责人查询用印
     *
     * @param Seal 用印主键
     * @return 用印
     */
    public Seal selectSealBySealIdAndApproveId(Seal seal);

    /**
     * 查询用印列表
     *
     * @param seal 用印
     * @return 用印集合
     */
    public List<Seal> selectSealList(Seal seal);

    /**
     * 科室负责人查询用印列表
     *
     * @param seal   用印
     * @return 用印集合
     */
    public List<Seal> selectSealListByDept(Seal seal);

    /**
     * 指定审批人查询用印列表
     *
     * @param seal   用印
     * @return 用印集合
     */
    public List<Seal> selectSealListByMaster(Seal seal);

    /**
     * 科室审批
     *
     * @param seal 用印
     * @return 结果
     */
    public int deptApprovalSeal(Seal seal);

    /**
     * 指定审批人审批
     *
     * @param seal 用印
     * @return 结果
     */
    public int masterApproval(Seal seal);

    /**
     * 新增用印
     *
     * @param seal 用印
     * @return 结果
     */
    public int insertSeal(Seal seal);

    /**
     * 查询用印类型
     *
     * @return 用印类型集合
     */
    public List<SealType> querySealType();

    /**
     * 批量删除用印
     *
     * @param sealIds 需要删除的用印主键集合
     * @return 结果
     */
    public int deleteSealBySealIds(String[] sealIds, Long userId);

    public String getDeptName(Long deptId);

    public String getUserName(Long userId);

    /**
     * 判断选中的所要导出的ids是否属于自己
     *
     * @param ids
     * @param userId
     * @return boolean
     */
    public boolean isSelfSealList(List<String> ids, Long userId);

    /**
     * 判断seal是否属于自己
     *
     * @param sealId
     * @param userId
     * @return boolean
     */
    public int isSelfSeal(String sealId, Long userId);

    /**
     * 通过List<String> ids获取List<Seal>
     */
    public List<Seal> getListSealByIds(List<String> ids);

    /**
     * 科室负责人查询待审批任务个数
     *
     * @return
     */
    public int selectDeptToBeApprovedTask();

    /**
     * 用印审核人查询待审批任务个数
     *
     * @return
     */
    public int selectMasterToBeApprovedTask();

    /**
     * 修改用印
     */
    public int updateSeal(Seal seal);

    /**
     * 进入审批流程
     */
    public void intoApprovel(Seal seal);

    /**
     * 个人补传附件
     * 只有审核流程通过后才可以
     */
    public int reUpFile(Seal seal) ;
}
